1. 9.8 案例:鸢尾花种类预测—流程实现

1.1. 学习目标

  • 知道KNeighborsClassifier的用法

1.2. 1 再识K-近邻算法API

  • sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm='auto')
    • n_neighbors:
      • int,可选(默认= 5),k_neighbors查询默认使用的邻居数
    • algorithm:{‘auto’,‘ball_tree’,‘kd_tree’,‘brute’}
      • 快速k近邻搜索算法,默认参数为auto,可以理解为算法自己决定合适的搜索算法。除此之外,用户也可以自己指定搜索算法ball_tree、kd_tree、brute方法进行搜索,
        • brute是蛮力搜索,也就是线性扫描,当训练集很大时,计算非常耗时。
        • kd_tree,构造kd树存储数据以便对其进行快速检索的树形数据结构,kd树也就是数据结构中的二叉树。以中值切分构造的树,每个结点是一个超矩形,在维数小于20时效率高。
        • ball tree是为了克服kd树高维失效而发明的,其构造过程是以质心C和半径r分割样本空间,每个节点是一个超球体。

1.3. 2 案例:鸢尾花种类预测

1.3.1. 2.1 数据集介绍

Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。关于数据集的具体介绍:

image-20230710173323011

1.3.2. 2.2 步骤分析

  • 1.获取数据集
  • 2.数据基本处理
  • 3.特征工程
  • 4.机器学习(模型训练)
  • 5.模型评估

1.3.3. 2.3 代码过程

  • 导入模块
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
  • 先从sklearn当中获取数据集,然后进行数据集的分割
# 1.获取数据集
iris = load_iris()

# 2.数据基本处理
# x_train,x_test,y_train,y_test为训练集特征值、测试集特征值、训练集目标值、测试集目标值
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=22)
  • 进行数据标准化 -- 特征值的标准化
# 3、特征工程:标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
  • 模型进行训练预测
# 4、机器学习(模型训练)
estimator = KNeighborsClassifier(n_neighbors=9)
estimator.fit(x_train, y_train)
# 5、模型评估
# 方法1:比对真实值和预测值
y_predict = estimator.predict(x_test)
print("预测结果为:\n", y_predict)
print("比对真实值和预测值:\n", y_predict == y_test)
# 方法2:直接计算准确率
score = estimator.score(x_test, y_test)
print("准确率为:\n", score)

1.4. 3 案例小结

在本案例中,具体完成内容有:

  • 使用可视化加载和探索数据,以确定特征是否能将不同类别分开。
  • 通过标准化数字特征并随机抽样到训练集和测试集来准备数据。
  • 通过统计学,精确度度量进行构建和评估机器学习模型。

同学之间讨论刚才完成的机器学习代码,并且确保在自己的电脑运行成功

1.5. 4 总结

  • KNeighborsClassifier的使用【知道】
    • sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm='auto')
      • algorithm(auto,ball_tree, kd_tree, brute) -- 选择什么样的算法进行计算
Copyright © MISIN 2022 | 豫ICP备2023040351号-1 all right reserved,powered by Gitbook该文件修订时间: 2024-01-12 07:58:59

results matching ""

    No results matching ""